OpenLDAP Server verwalten
1. Datenbank-Suffix (olcSuffix
)
Der olcSuffix
definiert den Basis-DN, unter dem die Daten der jeweiligen Datenbank gespeichert werden. Es ist wichtig, diesen zu kennen, um zu wissen, welche Datenbank für welchen Namespace zuständig ist.
Um alle Datenbanken unter cn=config
zu sehen, kannst du diesen Befehl verwenden:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b "cn=config" "(objectClass=olcDatabaseConfig)" olcDatabase olcSuffix
dn: olcDatabase={-1}frontend,cn=config
olcDatabase: {-1}frontend
dn: olcDatabase={0}config,cn=config
olcDatabase: {0}config
dn: olcDatabase={1}mdb,cn=config
olcDatabase: {1}mdb
olcSuffix: dc=example,dc=com
Dieser Befehl listet:
- Den Namen jeder Datenbank (z. B.
olcDatabase={0}config, olcDatabase={1}mdb
). - Den zugehörigen
olcSuffix
, welcher den Basis-DN der Datenbank angibt (z. B.dc=example,dc=com
)
2. Zugriffssteuerung (olcAccess
)
Die olcAccess
-Konfiguration definiert, wer auf bestimmte Daten zugreifen kann und welche Berechtigungen bestehen. Du kannst dies anpassen, um sicherzustellen, dass nur autorisierte Benutzer oder Gruppen auf bestimmte LDAP-Daten zugreifen können.
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b "olcDatabase={1}mdb,cn=config" olcAccess
dn: olcDatabase={1}mdb,cn=config
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=cn,mail by self write by anonymous auth by * none
olcAccess: {2}to attrs=shadowLastChange by self write by * read
olcAccess: {3}to * by * read
dn: olcOverlay={0}dynlist,olcDatabase={1}mdb,cn=config
Hier sind die wichtigsten Zugriffsbeschränkungen definiert:
- Zugriff auf
userPassword
: Nur der Benutzer selbst darf sein Passwort ändern, und anonyme Benutzer dürfen nur authentifizieren. - Zugriff auf
cn,mail
: Nur der Benutzer selbst darf den Namencn
und die Emailmail
ändern. - Zugriff auf
shadowLastChange
: Nur der Benutzer selbst darf das Änderungsdatum seines Passworts ändern. - Allgemeiner Zugriff: Alle Benutzer können alle anderen Daten lesen.
Möchten wir nun dem Benutzer die Berechtigungen geben, seinen Namen cn
und seine Email Adresse mail
ändern zu können, erstellen wir die folgende ACL und fügen diese mit ldapmodify
hinzu.
vi add-acl-for-cn-mail.ldif
ACL um eigene Email Adresse und Name zu ändern.
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {1}to attrs=cn,mail
by self write
by anonymous auth
by * none
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f add-acl-for-cn-mail.ldif
3. Datenbank-Typen und Konfiguration (olcDatabase
)
OpenLDAP unterstützt verschiedene Datenbanktypen, wie z.B. MDB (Memory-Mapped Database) oder BDB (Berkeley DB). Jeder Typ hat unterschiedliche Leistungsmerkmale und Konfigurationseinstellungen. Du solltest wissen, welcher Datenbanktyp für deine Umgebung verwendet wird.
- MDB (Memory-Mapped Database) Wird oft verwendet, da es eine höhere Leistung und eine einfachere Verwaltung bietet.
- BDB Eine ältere, aber immer noch unterstützte Datenbank, die in einigen älteren OpenLDAP-Versionen verwendet wird.
Du kannst die Konfiguration einer bestimmten Datenbank anzeigen, indem du den folgenden Befehl verwendes:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b "olcDatabase={1}mdb,cn=config"
dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=example,dc=com
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=cn,mail by self write by anonymous auth by * none
olcAccess: {2}to attrs=shadowLastChange by self write by * read
olcAccess: {3}to * by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}*************
olcDbCheckpoint: 512 30
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbMaxSize: 1073741824
dn: olcOverlay={0}dynlist,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcDynListConfig
olcOverlay: {0}dynlist
olcDynListAttrSet: {0}groupOfURLs memberURL member+memberOf@groupOfNames
4. Replikation
Wenn du LDAP in einer replizierten Umgebung verwendest (Master-Slave oder Multi-Master), ist die Konfiguration der Replikation wichtig. Die Replikationsoptionen werden unter olcReplicate und olcSync in der Konfigurationsdatenbank festgelegt.
- Replikation von Daten Sicherstellen, dass Replikationsserver korrekt konfiguriert sind, um Daten konsistent zu halten.
- Replikationsprotokolle Überwachung von Replikationsfehlern und Synchronisierungsproblemen ist wichtig.
Beispiel für die Replikationskonfiguration:
olcReplicate: rid=001 provider=ldap://master.example.com binddn="cn=admin,dc=example,dc=com" bindmethod=simple credentials="secret" searchbase="dc=example,dc=com" scope=sub schemachecking=off
5. Schema
OpenLDAP verwendet ein Schema, um zu definieren, welche Attribute und Objekte erlaubt sind. Das Schema legt fest, welche Felder für Benutzer oder andere Einträge gültig sind. Du kannst das Schema erweitern, um benutzerdefinierte Attribute hinzuzufügen, wenn du spezielle Anforderungen hast.
- Beispiel:
cn=schema
enthält die Informationen über die geladenen Schemadateien. - Wenn du benutzerdefinierte Attribute hinzufügen möchtest, kannst du dies in einer neuen
.ldif
-Datei tun und die Schema-Konfiguration entsprechend anpassen.
6. Protokollierung (olcLogLevel
)
Die Protokollierung von OpenLDAP kann auf verschiedenen Ebenen konfiguriert werden, um detaillierte Informationen über Anfragen und Fehler zu sammeln. Dies ist nützlich, um Probleme mit dem Server zu diagnostizieren oder Sicherheitsvorfälle zu überwachen.
- Beispiel: Der Wert
256
bedeutet, dass alle wichtigen Ereignisse protokolliert werden.
olcLogLevel: 256
7. Indexierung
OpenLDAP verwendet Indizes, um die Suche nach bestimmten Attributen zu beschleunigen. Du kannst sicherstellen, dass die richtigen Attribute für häufige Suchen indexiert sind, um die Leistung zu verbessern.
Diese Indizes beschleunigen Suchen nach objectClass
und mail
erheblich.
olcDbIndex: objectClass eq
olcDbIndex: mail eq
8. Backup und Wiederherstellung
Es ist wichtig, regelmäßige Backups der LDAP-Datenbank zu erstellen, um Datenverluste zu verhindern. Die Konfiguration und Datenbanken befinden sich in /var/lib/ldap/
(oder einem anderen Verzeichnis, abhängig von deiner Installation). Um eine Wiederherstellung vorzunehmen, kannst du die slapcat
und slapadd
Befehle verwenden.
- Backup erstellen:
sudo slapcat -v -l backup.ldif
- Wiederherstellung durchführen:
sudo slapadd -v -l backup.ldif
9. Benutzerverwaltung
Wenn du regelmäßig Benutzer hinzufügst, aktualisierst oder entfernst, solltest du dich mit den entsprechenden LDAP-Befehlen (ldapadd
, ldapmodify
, ldapdelete
) und den zugehörigen ldif
-Dateien auskennen. Diese werden verwendet, um die LDAP-Datenbank zu verwalten und zu modifizieren.
10. Sicherheit
- SSL/TLS Du solltest die Kommunikation mit dem LDAP-Server über SSL/TLS sichern. Dies schützt die Daten während der Übertragung.
- Passwort-Policy Sicherstellen, dass eine Passwort-Policy konfiguriert ist, die Mindestanforderungen an die Passwortlänge und -komplexität festlegt.
Zusammenfassung:
Die wichtigsten Dinge, die du im Umgang mit der LDAP-Konfiguration wissen solltest, sind:
- Die Datenbank-Konfiguration und Suffixe.
- Zugriffssteuerungen (
olcAccess
). - Der verwendete Datenbanktyp (MDB oder BDB).
- Replikation und deren Konfiguration.
- Das Schema und benutzerdefinierte Attribute.
- Protokollierungseinstellungen.
- Indexierung von häufig verwendeten Attributen.
- Regelmäßige Backups und Wiederherstellungsmöglichkeiten.
- Die Sicherheitseinstellungen (SSL/TLS und Passwort-Policy).
Diese Aspekte sind entscheidend, um OpenLDAP effizient und sicher zu verwalten.